- family_replacement: $1
  regex: (GeoEvent Server) (\d+)(?:\.(\d+)(?:\.(\d+)|)|)
  v1_replacement: $2
  v2_replacement: $3
- family_replacement: $1
  regex: '(ArcGIS Pro)(?: (\d+)\.(\d+)\.([^ ]+)|)'
  v1_replacement: $2
  v2_replacement: $3
- family_replacement: ArcMap
  regex: ArcGIS Client Using WinInet
  v1_replacement: $2
  v2_replacement: $3
- family_replacement: Operations Dashboard for ArcGIS
  regex: (OperationsDashboard)-(?:Windows)-(\d+)\.(\d+)\.(\d+)
  v1_replacement: $2
  v2_replacement: $3
- family_replacement: ArcGIS Earth
  regex: (arcgisearth)/(\d+)\.(\d+)(?:\.(\d+)|)
  v1_replacement: $2
  v2_replacement: $3
- family_replacement: ArcGIS Earth
  regex: com.esri.(earth).phone/(\d+)\.(\d+)(?:\.(\d+)|)
  v1_replacement: $2
  v2_replacement: $3
- family_replacement: Explorer for ArcGIS
  regex: (arcgis-explorer)/(\d+)\.(\d+)\.(\d+)
  v1_replacement: $2
  v2_replacement: $3
- family_replacement: Collector for ArcGIS
  regex: arcgis-(collector|aurora)/(\d+)\.(\d+)\.(\d+)
  v1_replacement: $2
  v2_replacement: $3
- family_replacement: Workforce for ArcGIS
  regex: (arcgis-workforce)/(\d+)\.(\d+)\.(\d+)
  v1_replacement: $2
  v2_replacement: $3
- family_replacement: $1 for ArcGIS
  regex: (Collector|Explorer|Workforce)-(?:Android|iOS)-(\d+)\.(\d+)(?:\.(\d+)|)
  v1_replacement: $2
  v2_replacement: $3
- family_replacement: $1 for ArcGIS
  regex: (Explorer|Collector)/(\d+) CFNetwork
  v1_replacement: $2
  v2_replacement: $3
- family_replacement: ArcGIS Runtime SDK for $1
  regex: ArcGISRuntime-(Android|iOS|NET|Qt)/(\d+)\.(\d+)(?:\.(\d+)|)
  v1_replacement: $2
  v2_replacement: $3
- family_replacement: ArcGIS Runtime SDK for $1
  regex: ArcGIS\.?(iOS|Android|NET|Qt)(?:-|\.)(\d+)\.(\d+)(?:\.(\d+)|)
  v1_replacement: $2
  v2_replacement: $3
- family_replacement: ArcGIS Runtime SDK for $1
  regex: ArcGIS\.Runtime\.(Qt)\.(\d+)\.(\d+)(?:\.(\d+)|)
  v1_replacement: $2
  v2_replacement: $3
- family_replacement: $1
  regex: ^(Luminary)[Stage]+/(\d+) CFNetwork
  v1_replacement: $2
  v2_replacement: $3
- family_replacement: $1
  regex: (ESPN)[%20| ]+Radio/(\d+)\.(\d+)\.(\d+) CFNetwork
  v1_replacement: $2
  v2_replacement: $3
- family_replacement: AntennaPod
  regex: (Antenna)/(\d+) CFNetwork
  v1_replacement: $2
  v2_replacement: $3
- family_replacement: $1
  regex: (TopPodcasts)Pro/(\d+) CFNetwork
  v1_replacement: $2
  v2_replacement: $3
- family_replacement: $1
  regex: (MusicDownloader)Lite/(\d+)\.(\d+)\.(\d+) CFNetwork
  v1_replacement: $2
  v2_replacement: $3
- family_replacement: $1
  regex: ^(.{0,200})-iPad\/(\d+)(?:\.(\d+)|)(?:\.(\d+)|)(?:\.(\d+)|) CFNetwork
  v1_replacement: $2
  v2_replacement: $3
- family_replacement: $1
  regex: ^(.{0,200})-iPhone/(\d+)(?:\.(\d+)|)(?:\.(\d+)|)(?:\.(\d+)|) CFNetwork
  v1_replacement: $2
  v2_replacement: $3
- family_replacement: $1
  regex: ^(.{0,200})/(\d+)(?:\.(\d+)|)(?:\.(\d+)|)(?:\.(\d+)|) CFNetwork
  v1_replacement: $2
  v2_replacement: $3
- family_replacement: $1
  regex: ^(Luminary)/(\d+)(?:\.(\d+)|)(?:\.(\d+)|)
  v1_replacement: $2
  v2_replacement: $3
- family_replacement: ESPN
  regex: (espn\.go)
  v1_replacement: $2
  v2_replacement: $3
- family_replacement: ESPN
  regex: (espnradio\.com)
  v1_replacement: $2
  v2_replacement: $3
- family_replacement: ESPN
  regex: ESPN APP$
  v1_replacement: $2
  v2_replacement: $3
- family_replacement: AudioBoom
  regex: (audioboom\.com)
  v1_replacement: $2
  v2_replacement: $3
- family_replacement: $1
  regex: ' (Rivo) RHYTHM'
  v1_replacement: $2
  v2_replacement: $3
- family_replacement: CFNetwork
  regex: (CFNetwork)(?:/(\d+)\.(\d+)(?:\.(\d+)|)|)
  v1_replacement: $2
  v2_replacement: $3
- family_replacement: PingdomBot
  regex: (Pingdom\.com_bot_version_)(\d+)\.(\d+)
  v1_replacement: $2
  v2_replacement: $3
- family_replacement: PingdomBot
  regex: (PingdomTMS)/(\d+)\.(\d+)\.(\d+)
  v1_replacement: $2
  v2_replacement: $3
- family_replacement: WebPageTest.org bot
  regex: ' (PTST)/(\d+)(?:\.(\d+)|)$'
  v1_replacement: $2
  v2_replacement: $3
- family_replacement: $1
  regex: X11; (Datanyze); Linux
  v1_replacement: $2
  v2_replacement: $3
- family_replacement: NewRelicPingerBot
  regex: (NewRelicPinger)/(\d+)\.(\d+)
  v1_replacement: $2
  v2_replacement: $3
- family_replacement: Tableau
  regex: (Tableau)/(\d+)\.(\d+)
  v1_replacement: $2
  v2_replacement: $3
- family_replacement: Adobe CreativeCloud
  regex: AppleWebKit/\d{1,10}\.\d{1,10}.{0,200} Safari.{0,200} (CreativeCloud)/(\d+)\.(\d+).(\d+)
  v1_replacement: $2
  v2_replacement: $3
- family_replacement: $1
  regex: (Salesforce)(?:.)\/(\d+)\.(\d?)
  v1_replacement: $2
  v2_replacement: $3
- family_replacement: StatusCakeBot
  regex: (\(StatusCake\))
  v1_replacement: $2
  v2_replacement: $3
- family_replacement: FacebookBot
  regex: (facebookexternalhit)/(\d+)\.(\d+)
  v1_replacement: $2
  v2_replacement: $3
- family_replacement: GooglePlusBot
  regex: Google.{0,50}/\+/web/snippet
  v1_replacement: $2
  v2_replacement: $3
- family_replacement: GmailImageProxy
  regex: via ggpht\.com GoogleImageProxy
  v1_replacement: $2
  v2_replacement: $3
- family_replacement: YahooMailProxy
  regex: YahooMailProxy; https://help\.yahoo\.com/kb/yahoo-mail-proxy-SLN28749\.html
  v1_replacement: $2
  v2_replacement: $3
- family_replacement: Twitterbot
  regex: (Twitterbot)/(\d+)\.(\d+)
  v1_replacement: $2
  v2_replacement: $3
- family_replacement: $1
  regex: /((?:Ant-|)Nutch|[A-z]+[Bb]ot|[A-z]+[Ss]pider|Axtaris|fetchurl|Isara|ShopSalad|Tailsweep)[
    \-](\d+)(?:\.(\d+)|)(?:\.(\d+)|)
  v1_replacement: $2
  v2_replacement: $3
- family_replacement: $1
  regex: \b(008|Altresium|Argus|BaiduMobaider|BoardReader|DNSGroup|DataparkSearch|EDI|Goodzer|Grub|INGRID|Infohelfer|LinkedInBot|LOOQ|Nutch|OgScrper|Pandora|PathDefender|Peew|PostPost|Steeler|Twitterbot|VSE|WebCrunch|WebZIP|Y!J-BR[A-Z]|YahooSeeker|envolk|sproose|wminer)/(\d+)(?:\.(\d+)|)(?:\.(\d+)|)
  v1_replacement: $2
  v2_replacement: $3
- family_replacement: MSIECrawler
  regex: (MSIE) (\d+)\.(\d+)([a-z]\d|[a-z]|);.{0,200} MSIECrawler
  v1_replacement: $2
  v2_replacement: $3
- family_replacement: $1
  regex: (DAVdroid)/(\d+)\.(\d+)(?:\.(\d+)|)
  v1_replacement: $2
  v2_replacement: $3
- family_replacement: $1
  regex: (Google-HTTP-Java-Client|Apache-HttpClient|PostmanRuntime|Go-http-client|scalaj-http|http%20client|Python-urllib|HttpMonitor|TLSProber|WinHTTP|JNLP|okhttp|aihttp|reqwest|axios|unirest-(?:java|python|ruby|nodejs|php|net))(?:[
    /](\d+)(?:\.(\d+)|)(?:\.(\d+)|)|)
  v1_replacement: $2
  v2_replacement: $3
- family_replacement: Pinterestbot
  regex: (Pinterest(?:bot|))/(\d+)(?:\.(\d+)|)(?:\.(\d+)|)[;\s(]+\+https://www.pinterest.com/bot.html
  v1_replacement: $2
  v2_replacement: $3
- family_replacement: $1
  regex: '(CSimpleSpider|Cityreview Robot|CrawlDaddy|CrawlFire|Finderbots|Index crawler|Job
    Roboter|KiwiStatus Spider|Lijit Crawler|QuerySeekerSpider|ScollSpider|Trends Crawler|USyd-NLP-Spider|SiteCat
    Webbot|BotName\/\$BotVersion|123metaspider-Bot|1470\.net crawler|50\.nu|8bo Crawler
    Bot|Aboundex|Accoona-[A-z]{1,30}-Agent|AdsBot-Google(?:-[a-z]{1,30}|)|altavista|AppEngine-Google|archive.{0,30}\.org_bot|archiver|Ask
    Jeeves|[Bb]ai[Dd]u[Ss]pider(?:-[A-Za-z]{1,30})(?:-[A-Za-z]{1,30}|)|bingbot|BingPreview|blitzbot|BlogBridge|Bloglovin|BoardReader
    Blog Indexer|BoardReader Favicon Fetcher|boitho.com-dc|BotSeer|BUbiNG|\b\w{0,30}favicon\w{0,30}\b|\bYeti(?:-[a-z]{1,30}|)|Catchpoint(?:
    bot|)|[Cc]harlotte|Checklinks|clumboot|Comodo HTTP\(S\) Crawler|Comodo-Webinspector-Crawler|ConveraCrawler|CRAWL-E|CrawlConvera|Daumoa(?:-feedfetcher|)|Feed
    Seeker Bot|Feedbin|findlinks|Flamingo_SearchEngine|FollowSite Bot|furlbot|Genieo|gigabot|GomezAgent|gonzo1|(?:[a-zA-Z]{1,30}-|)Googlebot(?:-[a-zA-Z]{1,30}|)|Google
    SketchUp|grub-client|gsa-crawler|heritrix|HiddenMarket|holmes|HooWWWer|htdig|ia_archiver|ICC-Crawler|Icarus6j|ichiro(?:/mobile|)|IconSurf|IlTrovatore(?:-Setaccio|)|InfuzApp|Innovazion
    Crawler|InternetArchive|IP2[a-z]{1,30}Bot|jbot\b|KaloogaBot|Kraken|Kurzor|larbin|LEIA|LesnikBot|Linguee
    Bot|LinkAider|LinkedInBot|Lite Bot|Llaut|lycos|Mail\.RU_Bot|masscan|masidani_bot|Mediapartners-Google|Microsoft
    .{0,30} Bot|mogimogi|mozDex|MJ12bot|msnbot(?:-media {0,2}|)|msrbot|Mtps Feed Aggregation
    System|netresearch|Netvibes|NewsGator[^/]{0,30}|^NING|Nutch[^/]{0,30}|Nymesis|ObjectsSearch|OgScrper|Orbiter|OOZBOT|PagePeeker|PagesInventory|PaxleFramework|Peeplo
    Screenshot Bot|PHPCrawl|PlantyNet_WebRobot|Pompos|Qwantify|Read%20Later|Reaper|RedCarpet|Retreiver|Riddler|Rival
    IQ|scooter|Scrapy|Scrubby|searchsight|seekbot|semanticdiscovery|SemrushBot|Simpy|SimplePie|SEOstats|SimpleRSS|SiteCon|Slackbot-LinkExpanding|Slack-ImgProxy|Slurp|snappy|Speedy
    Spider|Squrl Java|Stringer|TheUsefulbot|ThumbShotsBot|Thumbshots\.ru|Tiny Tiny
    RSS|Twitterbot|WhatsApp|URL2PNG|Vagabondo|VoilaBot|^vortex|Votay bot|^voyager|WASALive.Bot|Web-sniffer|WebThumb|WeSEE:[A-z]{1,30}|WhatWeb|WIRE|WordPress|Wotbox|www\.almaden\.ibm\.com|Xenu(?:.s|)
    Link Sleuth|Xerka [A-z]{1,30}Bot|yacy(?:bot|)|YahooSeeker|Yahoo! Slurp|Yandex\w{1,30}|YodaoBot(?:-[A-z]{1,30}|)|YottaaMonitor|Yowedo|^Zao|^Zao-Crawler|ZeBot_www\.ze\.bz|ZooShot|ZyBorg|ArcGIS
    Hub Indexer)(?:[ /]v?(\d+)(?:\.(\d+)(?:\.(\d+)|)|)|)'
  v1_replacement: $2
  v2_replacement: $3
- family_replacement: $1
  regex: \b(Boto3?|JetS3t|aws-(?:cli|sdk-(?:cpp|go|java|nodejs|ruby2?|dotnet-(?:\d{1,2}|core)))|s3fs)/(\d+)\.(\d+)(?:\.(\d+)|)
  v1_replacement: $2
  v2_replacement: $3
- family_replacement: $1
  regex: (FME)\/(\d+\.\d+)\.(\d+)\.(\d+)
  v1_replacement: $2
  v2_replacement: $3
- family_replacement: $1
  regex: (QGIS)\/(\d)\.?0?(\d{1,2})\.?0?(\d{1,2})
  v1_replacement: $2
  v2_replacement: $3
- family_replacement: $1
  regex: (JOSM)/(\d+)\.(\d+)
  v1_replacement: $2
  v2_replacement: $3
- family_replacement: $1
  regex: (Tygron Platform) \((\d+)\.(\d+)\.(\d+(?:\.\d+| RC \d+\.\d+))
  v1_replacement: $2
  v2_replacement: $3
- family_replacement: Facebook Messenger
  regex: \[(FBAN/MessengerForiOS|FB_IAB/MESSENGER);FBAV/(\d+)(?:\.(\d+)(?:\.(\d+)(?:\.(\d+)|)|)|)
  v1_replacement: $2
  v2_replacement: $3
- family_replacement: Facebook
  regex: \[FB.{0,300};(FBAV)/(\d+)(?:\.(\d+)|)(?:\.(\d+)|)
  v1_replacement: $2
  v2_replacement: $3
- family_replacement: Facebook
  regex: \[FB.{0,300};
  v1_replacement: $2
  v2_replacement: $3
- family_replacement: $1
  regex: ^.{0,200}?(?:\/[A-Za-z0-9\.]{0,50}|) {0,2}([A-Za-z0-9 \-_\!\[\]:]{0,50}(?:[Aa]rchiver|[Ii]ndexer|[Ss]craper|[Bb]ot|[Ss]pider|[Cc]rawl[a-z]{0,50}))[/
    ](\d+)(?:\.(\d+)(?:\.(\d+)|)|)
  v1_replacement: $2
  v2_replacement: $3
- family_replacement: $1
  regex: ^.{0,200}?((?:[A-Za-z][A-Za-z0-9 -]{0,50}|)[^C][^Uu][Bb]ot)\b(?:(?:[ /]|
    v)(\d+)(?:\.(\d+)|)(?:\.(\d+)|)|)
  v1_replacement: $2
  v2_replacement: $3
- family_replacement: $1
  regex: '^.{0,200}?((?:[A-z0-9]{1,50}|[A-z\-]{1,50} ?|)(?: the |)(?:[Ss][Pp][Ii][Dd][Ee][Rr]|[Ss]crape|[Cc][Rr][Aa][Ww][Ll])[A-z0-9]{0,50})(?:(?:[
    /]| v)(\d+)(?:\.(\d+)|)(?:\.(\d+)|)|)'
  v1_replacement: $2
  v2_replacement: $3
- family_replacement: $1
  regex: (HbbTV)/(\d+)\.(\d+)\.(\d+) \(
  v1_replacement: $2
  v2_replacement: $3
- family_replacement: $1
  regex: (Chimera|SeaMonkey|Camino|Waterfox)/(\d+)\.(\d+)\.?([ab]?\d+[a-z]*|)
  v1_replacement: $2
  v2_replacement: $3
- family_replacement: Sailfish Browser
  regex: (SailfishBrowser)/(\d+)\.(\d+)(?:\.(\d+)|)
  v1_replacement: $2
  v2_replacement: $3
- family_replacement: $1
  regex: \[(Pinterest)/[^\]]{1,50}\]
  v1_replacement: $2
  v2_replacement: $3
- family_replacement: $1
  regex: '(Pinterest)(?: for Android(?: Tablet|)|)/(\d+)(?:\.(\d+)|)(?:\.(\d+)|)'
  v1_replacement: $2
  v2_replacement: $3
- family_replacement: $1
  regex: Mozilla.{1,200}Mobile.{1,100}(Instagram).(\d+)\.(\d+)\.(\d+)
  v1_replacement: $2
  v2_replacement: $3
- family_replacement: $1
  regex: Mozilla.{1,200}Mobile.{1,100}(Flipboard).(\d+)\.(\d+)\.(\d+)
  v1_replacement: $2
  v2_replacement: $3
- family_replacement: $1
  regex: Mozilla.{1,200}Mobile.{1,100}(Flipboard-Briefing).(\d+)\.(\d+)\.(\d+)
  v1_replacement: $2
  v2_replacement: $3
- family_replacement: $1
  regex: Mozilla.{1,200}Mobile.{1,100}(Onefootball)\/Android.(\d+)\.(\d+)\.(\d+)
  v1_replacement: $2
  v2_replacement: $3
- family_replacement: $1
  regex: (Snapchat)\/(\d+)\.(\d+)\.(\d+)\.(\d+)
  v1_replacement: $2
  v2_replacement: $3
- family_replacement: Twitter
  regex: (Twitter for (?:iPhone|iPad)|TwitterAndroid)(?:\/(\d+)\.(\d+)|)
  v1_replacement: $2
  v2_replacement: $3
- family_replacement: Spider
  regex: Mozilla.{1,100}Mobile.{1,100}AspiegelBot
  v1_replacement: $2
  v2_replacement: $3
- family_replacement: Spider
  regex: AspiegelBot
  v1_replacement: $2
  v2_replacement: $3
- family_replacement: Basilisk
  regex: (Firefox)/(\d+)\.(\d+) Basilisk/(\d+)
  v1_replacement: $2
  v2_replacement: $3
- family_replacement: Pale Moon
  regex: (PaleMoon)/(\d+)\.(\d+)(?:\.(\d+)|)
  v1_replacement: $2
  v2_replacement: $3
- family_replacement: Firefox Mobile
  regex: (Fennec)/(\d+)\.(\d+)\.?([ab]?\d+[a-z]*)
  v1_replacement: $2
  v2_replacement: $3
- family_replacement: Firefox Mobile
  regex: (Fennec)/(\d+)\.(\d+)(pre)
  v1_replacement: $2
  v2_replacement: $3
- family_replacement: Firefox Mobile
  regex: (Fennec)/(\d+)\.(\d+)
  v1_replacement: $2
  v2_replacement: $3
- family_replacement: Firefox Mobile
  regex: (?:Mobile|Tablet);.{0,200}(Firefox)/(\d+)\.(\d+)
  v1_replacement: $2
  v2_replacement: $3
- family_replacement: Firefox ($1)
  regex: (Namoroka|Shiretoko|Minefield)/(\d+)\.(\d+)\.(\d+(?:pre|))
  v1_replacement: $2
  v2_replacement: $3
- family_replacement: Firefox Alpha
  regex: (Firefox)/(\d+)\.(\d+)(a\d+[a-z]*)
  v1_replacement: $2
  v2_replacement: $3
- family_replacement: Firefox Beta
  regex: (Firefox)/(\d+)\.(\d+)(b\d+[a-z]*)
  v1_replacement: $2
  v2_replacement: $3
- family_replacement: Firefox Alpha
  regex: (Firefox)-(?:\d+\.\d+|)/(\d+)\.(\d+)(a\d+[a-z]*)
  v1_replacement: $2
  v2_replacement: $3
- family_replacement: Firefox Beta
  regex: (Firefox)-(?:\d+\.\d+|)/(\d+)\.(\d+)(b\d+[a-z]*)
  v1_replacement: $2
  v2_replacement: $3
- family_replacement: Firefox ($1)
  regex: (Namoroka|Shiretoko|Minefield)/(\d+)\.(\d+)([ab]\d+[a-z]*|)
  v1_replacement: $2
  v2_replacement: $3
- family_replacement: MicroB
  regex: (Firefox).{0,200}Tablet browser (\d+)\.(\d+)\.(\d+)
  v1_replacement: $2
  v2_replacement: $3
- family_replacement: $1
  regex: (MozillaDeveloperPreview)/(\d+)\.(\d+)([ab]\d+[a-z]*|)
  v1_replacement: $2
  v2_replacement: $3
- family_replacement: Firefox iOS
  regex: (FxiOS)/(\d+)\.(\d+)(\.(\d+)|)(\.(\d+)|)
  v1_replacement: $2
  v2_replacement: $3
- family_replacement: $1
  regex: (Flock)/(\d+)\.(\d+)(b\d+?)
  v1_replacement: $2
  v2_replacement: $3
- family_replacement: $1
  regex: (RockMelt)/(\d+)\.(\d+)\.(\d+)
  v1_replacement: $2
  v2_replacement: $3
- family_replacement: Netscape
  regex: (Navigator)/(\d+)\.(\d+)\.(\d+)
  v1_replacement: $2
  v2_replacement: $3
- family_replacement: Netscape
  regex: (Navigator)/(\d+)\.(\d+)([ab]\d+)
  v1_replacement: $2
  v2_replacement: $3
- family_replacement: Netscape
  regex: (Netscape6)/(\d+)\.(\d+)\.?([ab]?\d+|)
  v1_replacement: $2
  v2_replacement: $3
- family_replacement: My Internet Browser
  regex: (MyIBrow)/(\d+)\.(\d+)
  v1_replacement: $2
  v2_replacement: $3
- family_replacement: UC Browser
  regex: (UC? ?Browser|UCWEB|U3)[ /]?(\d+)\.(\d+)\.(\d+)
  v1_replacement: $2
  v2_replacement: $3
- family_replacement: $1
  regex: (Opera Tablet).{0,200}Version/(\d+)\.(\d+)(?:\.(\d+)|)
  v1_replacement: $2
  v2_replacement: $3
- family_replacement: $1
  regex: (Opera Mini)(?:/att|)/?(\d+|)(?:\.(\d+)|)(?:\.(\d+)|)
  v1_replacement: $2
  v2_replacement: $3
- family_replacement: Opera Mobile
  regex: (Opera)/.{1,100}Opera Mobi.{1,100}Version/(\d+)\.(\d+)
  v1_replacement: $2
  v2_replacement: $3
- family_replacement: Opera Mobile
  regex: (Opera)/(\d+)\.(\d+).{1,100}Opera Mobi
  v1_replacement: $2
  v2_replacement: $3
- family_replacement: Opera Mobile
  regex: Opera Mobi.{1,100}(Opera)(?:/|\s+)(\d+)\.(\d+)
  v1_replacement: $2
  v2_replacement: $3
- family_replacement: Opera Mobile
  regex: Opera Mobi
  v1_replacement: $2
  v2_replacement: $3
- family_replacement: $1
  regex: (Opera)/9.80.{0,200}Version/(\d+)\.(\d+)(?:\.(\d+)|)
  v1_replacement: $2
  v2_replacement: $3
- family_replacement: Opera Mobile
  regex: (?:Mobile Safari).{1,300}(OPR)/(\d+)\.(\d+)\.(\d+)
  v1_replacement: $2
  v2_replacement: $3
- family_replacement: Opera
  regex: (?:Chrome).{1,300}(OPR)/(\d+)\.(\d+)\.(\d+)
  v1_replacement: $2
  v2_replacement: $3
- family_replacement: Opera Coast
  regex: (Coast)/(\d+).(\d+).(\d+)
  v1_replacement: $2
  v2_replacement: $3
- family_replacement: Opera Mini
  regex: (OPiOS)/(\d+).(\d+).(\d+)
  v1_replacement: $2
  v2_replacement: $3
- family_replacement: Opera Neon
  regex: Chrome/.{1,200}( MMS)/(\d+).(\d+).(\d+)
  v1_replacement: $2
  v2_replacement: $3
- family_replacement: webOS Browser
  regex: (hpw|web)OS/(\d+)\.(\d+)(?:\.(\d+)|)
  v1_replacement: $2
  v2_replacement: $3
- family_replacement: LuaKit
  regex: (luakit)
  v1_replacement: $2
  v2_replacement: $3
- family_replacement: $1
  regex: (Snowshoe)/(\d+)\.(\d+).(\d+)
  v1_replacement: $2
  v2_replacement: $3
- family_replacement: $1
  regex: Gecko/\d+ (Lightning)/(\d+)\.(\d+)\.?((?:[ab]?\d+[a-z]*)|(?:\d*))
  v1_replacement: $2
  v2_replacement: $3
- family_replacement: Swiftfox
  regex: (Firefox)/(\d+)\.(\d+)\.(\d+(?:pre|)) \(Swiftfox\)
  v1_replacement: $2
  v2_replacement: $3
- family_replacement: Swiftfox
  regex: (Firefox)/(\d+)\.(\d+)([ab]\d+[a-z]*|) \(Swiftfox\)
  v1_replacement: $2
  v2_replacement: $3
- family_replacement: Rekonq
  regex: (rekonq)/(\d+)\.(\d+)(?:\.(\d+)|) Safari
  v1_replacement: $2
  v2_replacement: $3
- family_replacement: Rekonq
  regex: rekonq
  v1_replacement: $2
  v2_replacement: $3
- family_replacement: Conkeror
  regex: (conkeror|Conkeror)/(\d+)\.(\d+)(?:\.(\d+)|)
  v1_replacement: $2
  v2_replacement: $3
- family_replacement: Konqueror
  regex: (konqueror)/(\d+)\.(\d+)\.(\d+)
  v1_replacement: $2
  v2_replacement: $3
- family_replacement: $1
  regex: (WeTab)-Browser
  v1_replacement: $2
  v2_replacement: $3
- family_replacement: Comodo Dragon
  regex: (Comodo_Dragon)/(\d+)\.(\d+)\.(\d+)
  v1_replacement: $2
  v2_replacement: $3
- family_replacement: $1
  regex: (Symphony) (\d+).(\d+)
  v1_replacement: $2
  v2_replacement: $3
- family_replacement: NetFront NX
  regex: PLAYSTATION 3.{1,200}WebKit
  v1_replacement: $2
  v2_replacement: $3
- family_replacement: NetFront
  regex: PLAYSTATION 3
  v1_replacement: $2
  v2_replacement: $3
- family_replacement: NetFront
  regex: (PlayStation Portable)
  v1_replacement: $2
  v2_replacement: $3
- family_replacement: NetFront NX
  regex: (PlayStation Vita)
  v1_replacement: $2
  v2_replacement: $3
- family_replacement: NetFront NX
  regex: AppleWebKit.{1,200} (NX)/(\d+)\.(\d+)\.(\d+)
  v1_replacement: $2
  v2_replacement: $3
- family_replacement: NetFront NX
  regex: (Nintendo 3DS)
  v1_replacement: $2
  v2_replacement: $3
- family_replacement: Amazon Silk
  regex: (Silk)/(\d+)\.(\d+)(?:\.([0-9\-]+)|)
  v1_replacement: $2
  v2_replacement: $3
- family_replacement: $1
  regex: (Puffin)/(\d+)\.(\d+)(?:\.(\d+)|)
  v1_replacement: $2
  v2_replacement: $3
- family_replacement: Edge Mobile
  regex: Windows Phone .{0,200}(Edge)/(\d+)\.(\d+)
  v1_replacement: $2
  v2_replacement: $3
- family_replacement: Edge Mobile
  regex: (EdgiOS|EdgA)/(\d+)\.(\d+)\.(\d+)\.(\d+)
  v1_replacement: $2
  v2_replacement: $3
- family_replacement: Samsung Internet
  regex: (SamsungBrowser)/(\d+)\.(\d+)
  v1_replacement: $2
  v2_replacement: $3
- family_replacement: "Seznam prohl\xED\u017Ee\u010D"
  regex: (SznProhlizec)/(\d+)\.(\d+)(?:\.(\d+)|)
  v1_replacement: $2
  v2_replacement: $3
- family_replacement: Coc Coc
  regex: (coc_coc_browser)/(\d+)\.(\d+)(?:\.(\d+)|)
  v1_replacement: $2
  v2_replacement: $3
- family_replacement: Baidu Browser
  regex: (baidubrowser)[/\s](\d+)(?:\.(\d+)|)(?:\.(\d+)|)
  v1_replacement: $2
  v2_replacement: $3
- family_replacement: Baidu Explorer
  regex: (FlyFlow)/(\d+)\.(\d+)
  v1_replacement: $2
  v2_replacement: $3
- family_replacement: Maxthon
  regex: (MxBrowser)/(\d+)\.(\d+)(?:\.(\d+)|)
  v1_replacement: $2
  v2_replacement: $3
- family_replacement: $1
  regex: (Crosswalk)/(\d+)\.(\d+)\.(\d+)\.(\d+)
  v1_replacement: $2
  v2_replacement: $3
- family_replacement: LINE
  regex: (Line)/(\d+)\.(\d+)\.(\d+)
  v1_replacement: $2
  v2_replacement: $3
- family_replacement: MiuiBrowser
  regex: (MiuiBrowser)/(\d+)\.(\d+)\.(\d+)
  v1_replacement: $2
  v2_replacement: $3
- family_replacement: Mint Browser
  regex: (Mint Browser)/(\d+)\.(\d+)\.(\d+)
  v1_replacement: $2
  v2_replacement: $3
- family_replacement: TopBuzz
  regex: (TopBuzz)/(\d+).(\d+).(\d+)
  v1_replacement: $2
  v2_replacement: $3
- family_replacement: Google
  regex: Mozilla.{1,200}Android.{1,200}(GSA)/(\d+)\.(\d+)\.(\d+)
  v1_replacement: $2
  v2_replacement: $3
- family_replacement: QQ Browser Mini
  regex: (MQQBrowser/Mini)(?:(\d+)(?:\.(\d+)|)(?:\.(\d+)|)|)
  v1_replacement: $2
  v2_replacement: $3
- family_replacement: QQ Browser Mobile
  regex: (MQQBrowser)(?:/(\d+)(?:\.(\d+)|)(?:\.(\d+)|)|)
  v1_replacement: $2
  v2_replacement: $3
- family_replacement: QQ Browser
  regex: (QQBrowser)(?:/(\d+)(?:\.(\d+)\.(\d+)(?:\.(\d+)|)|)|)
  v1_replacement: $2
  v2_replacement: $3
- family_replacement: DuckDuckGo Mobile
  regex: Mobile.{0,200}(DuckDuckGo)/(\d+)
  v1_replacement: $2
  v2_replacement: $3
- family_replacement: Tenta Browser
  regex: (Tenta/)(\d+)\.(\d+)\.(\d+)
  v1_replacement: $2
  v2_replacement: $3
- family_replacement: Chrome Mobile WebView
  regex: Version/.{1,300}(Chrome)/(\d+)\.(\d+)\.(\d+)\.(\d+)
  v1_replacement: $2
  v2_replacement: $3
- family_replacement: Chrome Mobile WebView
  regex: ; wv\).{1,300}(Chrome)/(\d+)\.(\d+)\.(\d+)\.(\d+)
  v1_replacement: $2
  v2_replacement: $3
- family_replacement: Chrome Mobile
  regex: (CrMo)/(\d+)\.(\d+)\.(\d+)\.(\d+)
  v1_replacement: $2
  v2_replacement: $3
- family_replacement: Chrome Mobile iOS
  regex: (CriOS)/(\d+)\.(\d+)\.(\d+)\.(\d+)
  v1_replacement: $2
  v2_replacement: $3
- family_replacement: Chrome Mobile
  regex: (Chrome)/(\d+)\.(\d+)\.(\d+)\.(\d+) Mobile(?:[ /]|$)
  v1_replacement: $2
  v2_replacement: $3
- family_replacement: Chrome Mobile
  regex: ' Mobile .{1,300}(Chrome)/(\d+)\.(\d+)\.(\d+)\.(\d+)'
  v1_replacement: $2
  v2_replacement: $3
- family_replacement: Chrome Frame
  regex: (chromeframe)/(\d+)\.(\d+)\.(\d+)
  v1_replacement: $2
  v2_replacement: $3
- family_replacement: Tizen Browser
  regex: (SLP Browser)/(\d+)\.(\d+)
  v1_replacement: $2
  v2_replacement: $3
- family_replacement: Sogou Explorer
  regex: (SE 2\.X) MetaSr (\d+)\.(\d+)
  v1_replacement: $2
  v2_replacement: $3
- family_replacement: RackspaceBot
  regex: (Rackspace Monitoring)/(\d+)\.(\d+)
  v1_replacement: $2
  v2_replacement: $3
- family_replacement: $1
  regex: (PRTG Network Monitor)
  v1_replacement: $2
  v2_replacement: $3
- family_replacement: $1
  regex: (PyAMF)/(\d+)\.(\d+)\.(\d+)
  v1_replacement: $2
  v2_replacement: $3
- family_replacement: Yandex Browser
  regex: (YaBrowser)/(\d+)\.(\d+)\.(\d+)
  v1_replacement: $2
  v2_replacement: $3
- family_replacement: Mail.ru Chromium Browser
  regex: (Chrome)/(\d+)\.(\d+)\.(\d+).{0,100} MRCHROME
  v1_replacement: $2
  v2_replacement: $3
- family_replacement: $1
  regex: (AOL) (\d+)\.(\d+); AOLBuild (\d+)
  v1_replacement: $2
  v2_replacement: $3
- family_replacement: $1
  regex: (PodCruncher|Downcast)[ /]?(\d+)(?:\.(\d+)|)(?:\.(\d+)|)(?:\.(\d+)|)
  v1_replacement: $2
  v2_replacement: $3
- family_replacement: $1
  regex: ' (BoxNotes)/(\d+)\.(\d+)\.(\d+)'
  v1_replacement: $2
  v2_replacement: $3
- family_replacement: Whale
  regex: (Whale)/(\d+)\.(\d+)\.(\d+)\.(\d+) Mobile(?:[ /]|$)
  v1_replacement: $2
  v2_replacement: $3
- family_replacement: Whale
  regex: (Whale)/(\d+)\.(\d+)\.(\d+)
  v1_replacement: $2
  v2_replacement: $3
- family_replacement: $1
  regex: (1Password)/(\d+)\.(\d+)\.(\d+)
  v1_replacement: $2
  v2_replacement: $3
- family_replacement: $1
  regex: (Ghost)/(\d+)\.(\d+)\.(\d+)
  v1_replacement: $2
  v2_replacement: $3
- family_replacement: $1
  regex: PAN (GlobalProtect)/(\d+)\.(\d+)\.(\d+) .{1,100} \(X11; Linux x86_64\)
  v1_replacement: $2
  v2_replacement: $3
- family_replacement: Slack Desktop Client
  regex: (Slack_SSB)/(\d+)\.(\d+)\.(\d+)
  v1_replacement: $2
  v2_replacement: $3
- family_replacement: HipChat Desktop Client
  regex: (HipChat)/?(\d+|)
  v1_replacement: $2
  v2_replacement: $3
- family_replacement: $1
  regex: \b(MobileIron|FireWeb|Jasmine|ANTGalio|Midori|Fresco|Lobo|PaleMoon|Maxthon|Lynx|OmniWeb|Dillo|Camino|Demeter|Fluid|Fennec|Epiphany|Shiira|Sunrise|Spotify|Flock|Netscape|Lunascape|WebPilot|NetFront|Netfront|Konqueror|SeaMonkey|Kazehakase|Vienna|Iceape|Iceweasel|IceWeasel|Iron|K-Meleon|Sleipnir|Galeon|GranParadiso|Opera
    Mini|iCab|NetNewsWire|ThunderBrowse|Iris|UP\.Browser|Bunjalloo|Google Earth|Raven
    for Mac|Openwave|MacOutlook|Electron|OktaMobile)/(\d+)\.(\d+)\.(\d+)
  v1_replacement: $2
  v2_replacement: $3
- family_replacement: Outlook
  regex: Microsoft Office Outlook 12\.\d+\.\d+|MSOffice 12
  v1_replacement: '2007'
  v2_replacement: $3
- family_replacement: Outlook
  regex: Microsoft Outlook 14\.\d+\.\d+|MSOffice 14
  v1_replacement: '2010'
  v2_replacement: $3
- family_replacement: Outlook
  regex: Microsoft Outlook 15\.\d+\.\d+
  v1_replacement: '2013'
  v2_replacement: $3
- family_replacement: Outlook
  regex: Microsoft Outlook (?:Mail )?16\.\d+\.\d+|MSOffice 16
  v1_replacement: '2016'
  v2_replacement: $3
- family_replacement: $1
  regex: Microsoft Office (Word) 2014
  v1_replacement: $2
  v2_replacement: $3
- family_replacement: Windows Live Mail
  regex: Outlook-Express\/7\.0
  v1_replacement: $2
  v2_replacement: $3
- family_replacement: $1
  regex: (Airmail) (\d+)\.(\d+)(?:\.(\d+)|)
  v1_replacement: $2
  v2_replacement: $3
- family_replacement: Thunderbird
  regex: (Thunderbird)/(\d+)\.(\d+)(?:\.(\d+(?:pre|))|)
  v1_replacement: $2
  v2_replacement: $3
- family_replacement: Postbox
  regex: (Postbox)/(\d+)\.(\d+)\.(\d+)
  v1_replacement: $2
  v2_replacement: $3
- family_replacement: Barca
  regex: (Barca(?:Pro)?)/(\d+)\.(\d+)(?:\.(\d+)|)
  v1_replacement: $2
  v2_replacement: $3
- family_replacement: Lotus Notes
  regex: (Lotus-Notes)/(\d+)\.(\d+)(?:\.(\d+)|)
  v1_replacement: $2
  v2_replacement: $3
- family_replacement: Superhuman
  regex: Superhuman
  v1_replacement: $2
  v2_replacement: $3
- family_replacement: $1
  regex: (Vivaldi)/(\d+)\.(\d+)\.(\d+)
  v1_replacement: $2
  v2_replacement: $3
- family_replacement: Edge
  regex: (Edge?)/(\d+)(?:\.(\d+)|)(?:\.(\d+)|)(?:\.(\d+)|)
  v1_replacement: $2
  v2_replacement: $3
- family_replacement: Brave
  regex: (brave)/(\d+)\.(\d+)\.(\d+) Chrome
  v1_replacement: $2
  v2_replacement: $3
- family_replacement: Iron
  regex: (Chrome)/(\d+)\.(\d+)\.(\d+)[\d.]{0,100} Iron[^/]
  v1_replacement: $2
  v2_replacement: $3
- family_replacement: $1
  regex: '\b(Dolphin)(?: |HDCN/|/INT\-)(\d+)\.(\d+)(?:\.(\d+)|)'
  v1_replacement: $2
  v2_replacement: $3
- family_replacement: $1
  regex: (HeadlessChrome)(?:/(\d+)\.(\d+)\.(\d+)|)
  v1_replacement: $2
  v2_replacement: $3
- family_replacement: $1
  regex: (Evolution)/(\d+)\.(\d+)\.(\d+\.\d+)
  v1_replacement: $2
  v2_replacement: $3
- family_replacement: $1
  regex: (RCM CardDAV plugin)/(\d+)\.(\d+)\.(\d+(?:-dev|))
  v1_replacement: $2
  v2_replacement: $3
- family_replacement: $1
  regex: (bingbot|Bolt|AdobeAIR|Jasmine|IceCat|Skyfire|Midori|Maxthon|Lynx|Arora|IBrowse|Dillo|Camino|Shiira|Fennec|Phoenix|Flock|Netscape|Lunascape|Epiphany|WebPilot|Opera
    Mini|Opera|NetFront|Netfront|Konqueror|Googlebot|SeaMonkey|Kazehakase|Vienna|Iceape|Iceweasel|IceWeasel|Iron|K-Meleon|Sleipnir|Galeon|GranParadiso|iCab|iTunes|MacAppStore|NetNewsWire|Space
    Bison|Stainless|Orca|Dolfin|BOLT|Minimo|Tizen Browser|Polaris|Abrowser|Planetweb|ICE
    Browser|mDolphin|qutebrowser|Otter|QupZilla|MailBar|kmail2|YahooMobileMail|ExchangeWebServices|ExchangeServicesClient|Dragon|Outlook-iOS-Android)/(\d+)\.(\d+)(?:\.(\d+)|)
  v1_replacement: $2
  v2_replacement: $3
- family_replacement: $1
  regex: (Chromium|Chrome)/(\d+)\.(\d+)(?:\.(\d+)|)(?:\.(\d+)|)
  v1_replacement: $2
  v2_replacement: $3
- family_replacement: IE Mobile
  regex: (IEMobile)[ /](\d+)\.(\d+)
  v1_replacement: $2
  v2_replacement: $3
- family_replacement: $1
  regex: (BacaBerita App)\/(\d+)\.(\d+)\.(\d+)
  v1_replacement: $2
  v2_replacement: $3
- family_replacement: $1
  regex: ^(bPod|Pocket Casts|Player FM)$
  v1_replacement: $2
  v2_replacement: $3
- family_replacement: $1
  regex: ^(AlexaMediaPlayer|VLC)/(\d+)\.(\d+)\.([^.\s]+)
  v1_replacement: $2
  v2_replacement: $3
- family_replacement: $1
  regex: ^(AntennaPod|WMPlayer|Zune|Podkicker|Radio|ExoPlayerDemo|Overcast|PocketTunes|NSPlayer|okhttp|DoggCatcher|QuickNews|QuickTime|Peapod|Podcasts|GoldenPod|VLC|Spotify|Miro|MediaGo|Juice|iPodder|gPodder|Banshee)/(\d+)\.(\d+)(?:\.(\d+)|)(?:\.(\d+)|)
  v1_replacement: $2
  v2_replacement: $3
- family_replacement: $1
  regex: ^(Peapod|Liferea)/([^.\s]+)\.([^.\s]+|)\.?([^.\s]+|)
  v1_replacement: $2
  v2_replacement: $3
- family_replacement: $1
  regex: ^(bPod|Player FM) BMID/(\S+)
  v1_replacement: $2
  v2_replacement: $3
- family_replacement: $1
  regex: '^(Podcast ?Addict)/v(\d+) '
  v1_replacement: $2
  v2_replacement: $3
- family_replacement: PodcastAddict
  regex: '^(Podcast ?Addict) '
  v1_replacement: $2
  v2_replacement: $3
- family_replacement: $1
  regex: (Replay) AV
  v1_replacement: $2
  v2_replacement: $3
- family_replacement: $1
  regex: (VOX) Music Player
  v1_replacement: $2
  v2_replacement: $3
- family_replacement: $1
  regex: (CITA) RSS Aggregator/(\d+)\.(\d+)
  v1_replacement: $2
  v2_replacement: $3
- family_replacement: $1
  regex: (Pocket Casts)$
  v1_replacement: $2
  v2_replacement: $3
- family_replacement: $1
  regex: (Player FM)$
  v1_replacement: $2
  v2_replacement: $3
- family_replacement: $1
  regex: (LG Player|Doppler|FancyMusic|MediaMonkey|Clementine) (\d+)\.(\d+)\.?([^.\s]+|)\.?([^.\s]+|)
  v1_replacement: $2
  v2_replacement: $3
- family_replacement: $1
  regex: (philpodder)/(\d+)\.(\d+)\.?([^.\s]+|)\.?([^.\s]+|)
  v1_replacement: $2
  v2_replacement: $3
- family_replacement: $1
  regex: (Player FM|Pocket Casts|DoggCatcher|Spotify|MediaMonkey|MediaGo|BashPodder)
  v1_replacement: $2
  v2_replacement: $3
- family_replacement: $1
  regex: (QuickTime)\.(\d+)\.(\d+)\.(\d+)
  v1_replacement: $2
  v2_replacement: $3
- family_replacement: $1
  regex: (Kinoma)(\d+)
  v1_replacement: $2
  v2_replacement: $3
- family_replacement: FancyMusic
  regex: (Fancy) Cloud Music (\d+)\.(\d+)
  v1_replacement: $2
  v2_replacement: $3
- family_replacement: ESPN
  regex: EspnDownloadManager
  v1_replacement: $2
  v2_replacement: $3
- family_replacement: $1
  regex: '(ESPN) Radio (\d+)\.(\d+)(?:\.(\d+)|) ?(?:rv:(\d+)|) '
  v1_replacement: $2
  v2_replacement: $3
- family_replacement: $1
  regex: (podracer|jPodder) v ?(\d+)\.(\d+)(?:\.(\d+)|)
  v1_replacement: $2
  v2_replacement: $3
- family_replacement: $1
  regex: (ZDM)/(\d+)\.(\d+)[; ]?
  v1_replacement: $2
  v2_replacement: $3
- family_replacement: $1
  regex: (Zune|BeyondPod) (\d+)(?:\.(\d+)|)[\);]
  v1_replacement: $2
  v2_replacement: $3
- family_replacement: $1
  regex: (WMPlayer)/(\d+)\.(\d+)\.(\d+)\.(\d+)
  v1_replacement: $2
  v2_replacement: $3
- family_replacement: WMPlayer
  regex: ^(Lavf)
  v1_replacement: $2
  v2_replacement: $3
- family_replacement: $1
  regex: ^(RSSRadio)[ /]?(\d+|)
  v1_replacement: $2
  v2_replacement: $3
- family_replacement: RSSRadio
  regex: (RSS_Radio) (\d+)\.(\d+)
  v1_replacement: $2
  v2_replacement: $3
- family_replacement: Podkicker
  regex: (Podkicker) \S+/(\d+)\.(\d+)\.(\d+)
  v1_replacement: $2
  v2_replacement: $3
- family_replacement: $1
  regex: ^(HTC) Streaming Player \S+ / \S+ / \S+ / (\d+)\.(\d+)(?:\.(\d+)|)
  v1_replacement: $2
  v2_replacement: $3
- family_replacement: $1
  regex: ^(Stitcher)/iOS
  v1_replacement: $2
  v2_replacement: $3
- family_replacement: $1
  regex: ^(Stitcher)/Android
  v1_replacement: $2
  v2_replacement: $3
- family_replacement: $1
  regex: ^(VLC) .{0,200}version (\d+)\.(\d+)\.(\d+)
  v1_replacement: $2
  v2_replacement: $3
- family_replacement: $1
  regex: ' (VLC) for'
  v1_replacement: $2
  v2_replacement: $3
- family_replacement: VLC
  regex: (vlc)/(\d+)\.(\d+)\.(\d+)
  v1_replacement: $2
  v2_replacement: $3
- family_replacement: $1
  regex: ^(foobar)\S{1,10}/(\d+)\.(\d+|)\.?([\da-z]+|)
  v1_replacement: $2
  v2_replacement: $3
- family_replacement: $1
  regex: ^(Clementine)\S{1,10} (\d+)\.(\d+|)\.?(\d+|)
  v1_replacement: $2
  v2_replacement: $3
- family_replacement: Amarok
  regex: (amarok)/(\d+)\.(\d+|)\.?(\d+|)
  v1_replacement: $2
  v2_replacement: $3
- family_replacement: $1
  regex: (Custom)-Feed Reader
  v1_replacement: $2
  v2_replacement: $3
- family_replacement: $1
  regex: (iRider|Crazy Browser|SkipStone|iCab|Lunascape|Sleipnir|Maemo Browser) (\d+)\.(\d+)\.(\d+)
  v1_replacement: $2
  v2_replacement: $3
- family_replacement: $1
  regex: (iCab|Lunascape|Opera|Android|Jasmine|Polaris|Microsoft SkyDriveSync|The
    Bat!) (\d+)(?:\.(\d+)|)(?:\.(\d+)|)
  v1_replacement: $2
  v2_replacement: $3
- family_replacement: $1
  regex: (Kindle)/(\d+)\.(\d+)
  v1_replacement: $2
  v2_replacement: $3
- family_replacement: $1
  regex: (Android) Donut
  v1_replacement: '1'
  v2_replacement: '2'
- family_replacement: $1
  regex: (Android) Eclair
  v1_replacement: '2'
  v2_replacement: '1'
- family_replacement: $1
  regex: (Android) Froyo
  v1_replacement: '2'
  v2_replacement: '2'
- family_replacement: $1
  regex: (Android) Gingerbread
  v1_replacement: '2'
  v2_replacement: '3'
- family_replacement: $1
  regex: (Android) Honeycomb
  v1_replacement: '3'
  v2_replacement: $3
- family_replacement: IE Large Screen
  regex: (MSIE) (\d+)\.(\d+).{0,100}XBLWP7
  v1_replacement: $2
  v2_replacement: $3
- family_replacement: $1
  regex: (Nextcloud)
  v1_replacement: $2
  v2_replacement: $3
- family_replacement: $1
  regex: (mirall)/(\d+)\.(\d+)\.(\d+)
  v1_replacement: $2
  v2_replacement: $3
- family_replacement: Owncloud
  regex: (ownCloud-android)/(\d+)\.(\d+)\.(\d+)
  v1_replacement: $2
  v2_replacement: $3
- family_replacement: Skype
  regex: (OC)/(\d+)\.(\d+)\.(\d+)\.(\d+) \(Skype for Business\)
  v1_replacement: $2
  v2_replacement: $3
- family_replacement: OpenVAS Scanner
  regex: (OpenVAS)(?:-VT)?(?:[ \/](\d+)(?:\.(\d+)|)(?:\.(\d+)|)|)
  v1_replacement: $2
  v2_replacement: $3
- family_replacement: $1
  regex: (AnyConnect)\/(\d+)(?:\.(\d+)(?:\.(\d+)|)|)
  v1_replacement: $2
  v2_replacement: $3
- family_replacement: Monitis
  regex: compatible; monitis
  v1_replacement: $2
  v2_replacement: $3
- family_replacement: $1
  regex: (Obigo)InternetBrowser
  v1_replacement: $2
  v2_replacement: $3
- family_replacement: $1
  regex: (Obigo)\-Browser
  v1_replacement: $2
  v2_replacement: $3
- family_replacement: Obigo
  regex: (Obigo|OBIGO)[^\d]*(\d+)(?:.(\d+)|)
  v1_replacement: $2
  v2_replacement: $3
- family_replacement: Maxthon
  regex: (MAXTHON|Maxthon) (\d+)\.(\d+)
  v1_replacement: $2
  v2_replacement: $3
- family_replacement: $1
  regex: (Maxthon|MyIE2|Uzbl|Shiira)
  v1_replacement: '0'
  v2_replacement: $3
- family_replacement: $1
  regex: (BrowseX) \((\d+)\.(\d+)\.(\d+)
  v1_replacement: $2
  v2_replacement: $3
- family_replacement: NCSA Mosaic
  regex: (NCSA_Mosaic)/(\d+)\.(\d+)
  v1_replacement: $2
  v2_replacement: $3
- family_replacement: Polaris
  regex: (POLARIS)/(\d+)\.(\d+)
  v1_replacement: $2
  v2_replacement: $3
- family_replacement: Polaris
  regex: (Embider)/(\d+)\.(\d+)
  v1_replacement: $2
  v2_replacement: $3
- family_replacement: Bon Echo
  regex: (BonEcho)/(\d+)\.(\d+)\.?([ab]?\d+|)
  v1_replacement: $2
  v2_replacement: $3
- family_replacement: TopBuzz
  regex: (TopBuzz) com.alex.NewsMaster/(\d+).(\d+).(\d+)
  v1_replacement: $2
  v2_replacement: $3
- family_replacement: TopBuzz
  regex: (TopBuzz) com.mobilesrepublic.newsrepublic/(\d+).(\d+).(\d+)
  v1_replacement: $2
  v2_replacement: $3
- family_replacement: TopBuzz
  regex: (TopBuzz) com.topbuzz.videoen/(\d+).(\d+).(\d+)
  v1_replacement: $2
  v2_replacement: $3
- family_replacement: Google
  regex: (iPod|iPhone|iPad).{1,200}GSA/(\d+)\.(\d+)\.(\d+)(?:\.(\d+)|) Mobile
  v1_replacement: $2
  v2_replacement: $3
- family_replacement: Mobile Safari
  regex: (iPod|iPhone|iPad).{1,200}Version/(\d+)\.(\d+)(?:\.(\d+)|).{1,200}[ +]Safari
  v1_replacement: $2
  v2_replacement: $3
- family_replacement: Mobile Safari UI/WKWebView
  regex: (iPod|iPod touch|iPhone|iPad);.{0,30}CPU.{0,30}OS[ +](\d+)_(\d+)(?:_(\d+)|).{0,30}
    AppleNews\/\d+\.\d+(?:\.\d+|)
  v1_replacement: $2
  v2_replacement: $3
- family_replacement: Mobile Safari UI/WKWebView
  regex: (iPod|iPhone|iPad).{1,200}Version/(\d+)\.(\d+)(?:\.(\d+)|)
  v1_replacement: $2
  v2_replacement: $3
- family_replacement: Mobile Safari
  regex: (iPod|iPod touch|iPhone|iPad).{0,200} Safari
  v1_replacement: $2
  v2_replacement: $3
- family_replacement: Mobile Safari UI/WKWebView
  regex: (iPod|iPod touch|iPhone|iPad)
  v1_replacement: $2
  v2_replacement: $3
- family_replacement: Apple $1 App
  regex: (Watch)(\d+),(\d+)
  v1_replacement: $2
  v2_replacement: $3
- family_replacement: $1
  regex: (Outlook-iOS)/\d+\.\d+\.prod\.iphone \((\d+)\.(\d+)\.(\d+)\)
  v1_replacement: $2
  v2_replacement: $3
- family_replacement: $1
  regex: (AvantGo) (\d+).(\d+)
  v1_replacement: $2
  v2_replacement: $3
- family_replacement: ONE Browser
  regex: (OneBrowser)/(\d+).(\d+)
  v1_replacement: $2
  v2_replacement: $3
- family_replacement: $1
  regex: (Avant)
  v1_replacement: '1'
  v2_replacement: $3
- family_replacement: $1
  regex: (QtCarBrowser)
  v1_replacement: '1'
  v2_replacement: $3
- family_replacement: iBrowser Mini
  regex: ^(iBrowser/Mini)(\d+).(\d+)
  v1_replacement: $2
  v2_replacement: $3
- family_replacement: $1
  regex: ^(iBrowser|iRAPP)/(\d+).(\d+)
  v1_replacement: $2
  v2_replacement: $3
- family_replacement: Nokia Services (WAP) Browser
  regex: ^(Nokia)
  v1_replacement: $2
  v2_replacement: $3
- family_replacement: Nokia Browser
  regex: (NokiaBrowser)/(\d+)\.(\d+).(\d+)\.(\d+)
  v1_replacement: $2
  v2_replacement: $3
- family_replacement: Nokia Browser
  regex: (NokiaBrowser)/(\d+)\.(\d+).(\d+)
  v1_replacement: $2
  v2_replacement: $3
- family_replacement: Nokia Browser
  regex: (NokiaBrowser)/(\d+)\.(\d+)
  v1_replacement: $2
  v2_replacement: $3
- family_replacement: Nokia Browser
  regex: (BrowserNG)/(\d+)\.(\d+).(\d+)
  v1_replacement: $2
  v2_replacement: $3
- family_replacement: Nokia Browser
  regex: (Series60)/5\.0
  v1_replacement: '7'
  v2_replacement: '0'
- family_replacement: Nokia OSS Browser
  regex: (Series60)/(\d+)\.(\d+)
  v1_replacement: $2
  v2_replacement: $3
- family_replacement: Ovi Browser
  regex: (S40OviBrowser)/(\d+)\.(\d+)\.(\d+)\.(\d+)
  v1_replacement: $2
  v2_replacement: $3
- family_replacement: $1
  regex: (Nokia)[EN]?(\d+)
  v1_replacement: $2
  v2_replacement: $3
- family_replacement: BlackBerry WebKit
  regex: (PlayBook).{1,200}RIM Tablet OS (\d+)\.(\d+)\.(\d+)
  v1_replacement: $2
  v2_replacement: $3
- family_replacement: BlackBerry WebKit
  regex: (Black[bB]erry|BB10).{1,200}Version/(\d+)\.(\d+)\.(\d+)
  v1_replacement: $2
  v2_replacement: $3
- family_replacement: BlackBerry
  regex: (Black[bB]erry)\s?(\d+)
  v1_replacement: $2
  v2_replacement: $3
- family_replacement: $1
  regex: (OmniWeb)/v(\d+)\.(\d+)
  v1_replacement: $2
  v2_replacement: $3
- family_replacement: Palm Blazer
  regex: (Blazer)/(\d+)\.(\d+)
  v1_replacement: $2
  v2_replacement: $3
- family_replacement: Palm Pre
  regex: (Pre)/(\d+)\.(\d+)
  v1_replacement: $2
  v2_replacement: $3
- family_replacement: $1
  regex: (ELinks)/(\d+)\.(\d+)
  v1_replacement: $2
  v2_replacement: $3
- family_replacement: $1
  regex: (ELinks) \((\d+)\.(\d+)
  v1_replacement: $2
  v2_replacement: $3
- family_replacement: $1
  regex: (Links) \((\d+)\.(\d+)
  v1_replacement: $2
  v2_replacement: $3
- family_replacement: $1
  regex: (QtWeb) Internet Browser/(\d+)\.(\d+)
  v1_replacement: $2
  v2_replacement: $3
- family_replacement: $1
  regex: (PhantomJS)/(\d+)\.(\d+)\.(\d+)
  v1_replacement: $2
  v2_replacement: $3
- family_replacement: WebKit Nightly
  regex: (AppleWebKit)/(\d+)(?:\.(\d+)|)\+ .{0,200} Safari
  v1_replacement: $2
  v2_replacement: $3
- family_replacement: Safari
  regex: (Version)/(\d+)\.(\d+)(?:\.(\d+)|).{0,100}Safari/
  v1_replacement: $2
  v2_replacement: $3
- family_replacement: $1
  regex: (Safari)/\d+
  v1_replacement: $2
  v2_replacement: $3
- family_replacement: $1
  regex: (OLPC)/Update(\d+)\.(\d+)
  v1_replacement: $2
  v2_replacement: $3
- family_replacement: $1
  regex: (OLPC)/Update()\.(\d+)
  v1_replacement: '0'
  v2_replacement: $3
- family_replacement: $1
  regex: (SEMC\-Browser)/(\d+)\.(\d+)
  v1_replacement: $2
  v2_replacement: $3
- family_replacement: Teleca Browser
  regex: (Teleca)
  v1_replacement: $2
  v2_replacement: $3
- family_replacement: Phantom Browser
  regex: (Phantom)/V(\d+)\.(\d+)
  v1_replacement: $2
  v2_replacement: $3
- family_replacement: IE
  regex: (Trident)/(7|8)\.(0)
  v1_replacement: '11'
  v2_replacement: $3
- family_replacement: IE
  regex: (Trident)/(6)\.(0)
  v1_replacement: '10'
  v2_replacement: $3
- family_replacement: IE
  regex: (Trident)/(5)\.(0)
  v1_replacement: '9'
  v2_replacement: $3
- family_replacement: IE
  regex: (Trident)/(4)\.(0)
  v1_replacement: '8'
  v2_replacement: $3
- family_replacement: $1
  regex: (Espial)/(\d+)(?:\.(\d+)|)(?:\.(\d+)|)
  v1_replacement: $2
  v2_replacement: $3
- family_replacement: Apple Mail
  regex: (AppleWebKit)/(\d+)\.(\d+)\.(\d+)
  v1_replacement: $2
  v2_replacement: $3
- family_replacement: $1
  regex: (Firefox)/(\d+)\.(\d+)\.(\d+)
  v1_replacement: $2
  v2_replacement: $3
- family_replacement: $1
  regex: (Firefox)/(\d+)\.(\d+)(pre|[ab]\d+[a-z]*|)
  v1_replacement: $2
  v2_replacement: $3
- family_replacement: IE
  regex: ([MS]?IE) (\d+)\.(\d+)
  v1_replacement: $2
  v2_replacement: $3
- family_replacement: Python Requests
  regex: (python-requests)/(\d+)\.(\d+)
  v1_replacement: $2
  v2_replacement: $3
- family_replacement: $1
  regex: \b(Windows-Update-Agent|WindowsPowerShell|Microsoft-CryptoAPI|SophosUpdateManager|SophosAgent|Debian
    APT-HTTP|Ubuntu APT-HTTP|libcurl-agent|libwww-perl|urlgrabber|curl|PycURL|Wget|wget2|aria2|Axel|OpenBSD
    ftp|lftp|jupdate|insomnia|fetch libfetch|akka-http|got|CloudCockpitBackend|ReactorNetty|axios|Jersey|Vert.x-WebClient|Apache-CXF|Go-CF-client|go-resty|AHC)(?:[
    /](\d+)(?:\.(\d+)|)(?:\.(\d+)|)|)
  v1_replacement: $2
  v2_replacement: $3
- family_replacement: CloudFoundry
  regex: ^(cf)\/(\d+)\.(\d+)\.(\S+)
  v1_replacement: $2
  v2_replacement: $3
- family_replacement: $1
  regex: ^(sap-leonardo-iot-sdk-nodejs) \/ (\d+)\.(\d+)\.(\d+)
  v1_replacement: $2
  v2_replacement: $3
- family_replacement: $1
  regex: ^(SAP NetWeaver Application Server) \(1.0;(\d{1})(\d{2})\)
  v1_replacement: $2
  v2_replacement: $3
- family_replacement: HTTPClient
  regex: ^(\w+-HTTPClient)\/(\d+)\.(\d+)-(\S+)
  v1_replacement: $2
  v2_replacement: $3
- family_replacement: $1
  regex: ^(go-cli)\s(\d+)\.(\d+).(\S+)
  v1_replacement: $2
  v2_replacement: $3
- family_replacement: $1
  regex: ^(Java-EurekaClient|Java-EurekaClient-Replication|HTTPClient|lua-resty-http)\/v?(\d+)\.(\d+)\.?(\d*)
  v1_replacement: $2
  v2_replacement: $3
- family_replacement: $1
  regex: ^(ping-service|sap xsuaa|Node-oauth|Site24x7|SAP CPI|JAEGER_SECURITY)
  v1_replacement: $2
  v2_replacement: $3
- family_replacement: Python aiohttp
  regex: (Python/3\.\d{1,3} aiohttp)/(\d+)\.(\d+)\.(\d+)
  v1_replacement: $2
  v2_replacement: $3
- family_replacement: $1
  regex: (Java)[/ ]?\d+\.(\d+)\.(\d+)[_-]*([a-zA-Z0-9]+|)
  v1_replacement: $2
  v2_replacement: $3
- family_replacement: $1
  regex: (minio-go)/v(\d+)\.(\d+)\.(\d+)
  v1_replacement: $2
  v2_replacement: $3
- family_replacement: $1
  regex: ^(ureq)[/ ](\d+)\.(\d+).(\d+)
  v1_replacement: $2
  v2_replacement: $3
- family_replacement: $1
  regex: ^(http\.rb)/(\d+)\.(\d+).(\d+)
  v1_replacement: $2
  v2_replacement: $3
- family_replacement: $1
  regex: ^(GuzzleHttp)/(\d+)\.(\d+).(\d+)
  v1_replacement: $2
  v2_replacement: $3
- family_replacement: $1
  regex: ^(grab)\b
  v1_replacement: $2
  v2_replacement: $3
- family_replacement: $1
  regex: ^(Cyberduck)/(\d+)\.(\d+)\.(\d+)(?:\.\d+|)
  v1_replacement: $2
  v2_replacement: $3
- family_replacement: $1
  regex: ^(S3 Browser) (\d+)[.-](\d+)[.-](\d+)(?:\s*https?://s3browser\.com|)
  v1_replacement: $2
  v2_replacement: $3
- family_replacement: $1
  regex: (S3Gof3r)
  v1_replacement: $2
  v2_replacement: $3
- family_replacement: $1
  regex: \b(ibm-cos-sdk-(?:core|java|js|python))/(\d+)\.(\d+)(?:\.(\d+)|)
  v1_replacement: $2
  v2_replacement: $3
- family_replacement: $1
  regex: ^(rusoto)/(\d+)\.(\d+)\.(\d+)
  v1_replacement: $2
  v2_replacement: $3
- family_replacement: $1
  regex: ^(rclone)/v(\d+)\.(\d+)
  v1_replacement: $2
  v2_replacement: $3
- family_replacement: $1
  regex: ^(Roku)/DVP-(\d+)\.(\d+)
  v1_replacement: $2
  v2_replacement: $3
- family_replacement: Kurio App
  regex: (Kurio)\/(\d+)\.(\d+)\.(\d+)
  v1_replacement: $2
  v2_replacement: $3
- family_replacement: $1
  regex: '^(Box(?: Sync)?)/(\d+)\.(\d+)\.(\d+)'
  v1_replacement: $2
  v2_replacement: $3
- family_replacement: ViaFree
  regex: ^(ViaFree|Viafree)-(?:tvOS-)?[A-Z]{2}/(\d+)\.(\d+)\.(\d+)
  v1_replacement: $2
  v2_replacement: $3
- family_replacement: $1
  regex: (Transmit)/(\d+)\.(\d+)\.(\d+)
  v1_replacement: $2
  v2_replacement: $3
- family_replacement: $1
  regex: (Download Master)
  v1_replacement: $2
  v2_replacement: $3
- family_replacement: $1
  regex: \b(HTTrack) (\d+)\.(\d+)(?:[\.\-](\d+)|)
  v1_replacement: $2
  v2_replacement: $3
